草庐IT

C++11 auto 和 size_type

全部标签

具有返回类型推导的 C++ 11 运算符重载

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭6年前。Improvethisquestion我有一个依赖于一种类型的模板类(例如templateclassVector)。现在,我想重载算术运算符:我可以将它们与用两种不同类型实例化的Vectors一起使用;结果与模板实例类型的推导方式相同;例子:Vectorfv={1.5,2.5};Vectoriv={1,2};autos1=fv+iv;//s1MUSTbeoftypeVector=={2.5,4.5}autos2=iv+fv;/

c++ - C4244 : '+=' : conversion from 'std::streamsize' to 'size_t' , 可能丢失数据

我已将我的VC++项目从VS2008迁移到VS2013并收到一些警告,例如:C4244:'+=':conversionfrom'std::streamsize'to'size_t',possiblelossofdata.如何解决这些类型的警告? 最佳答案 在MSVC2013中std::streamsize是:typedef_Longlongstreamsize;typedef_LONGLONG_Longlong;#define_LONGLONG__int64size_t是:typedefunsigned__int64size_t;因

c++ - T declval() 而不是 T && declval() for common_type

用std::declval不是更好吗?声明形式:templateTdeclval();//(1)然后是当前的:templateT&&declval();//(2)std::common_type(可能仅出于当前目的使用不同的名称)?common_type的行为使用(1)比使用std::decay_t时的行为更接近三元运算符(但未使用(2))的行为:templateTdeclval();templatestructcommon_type;templateusingcommon_type_t=typenamecommon_type::type;templatestructcommon_ty

c++ - 如何从 Veins Car2X 模拟器中的 TraCIDemoRSU11p 访问 TraCI 命令接口(interface)?

我想从VeinsSourceforOMNet++中RSU模型的应用层访问TraCI的命令接口(interface)。但我找不到。任何人都可以帮我这样做吗?请注意,在RSU节点的情况下,我没有将TraciMobility作为父模块。它只有我希望它拥有的BaseMobility。现在我想访问命令界面,以便此RSU可以执行sumo指令,例如改变红绿灯和获取感应回路数据。 最佳答案 Veins4.3提供了一个TraCIScenarioManagerAccess帮助程序类,可用于快速访问代码中处理TraCI的类(并通过此访问包装命令接口(in

c++ - DirectX11 桌面复制不适用于 NVIDIA

我也在尝试使用DirectXdesktopduplicationAPI.我尝试从运行exmapleshttp://www.codeproject.com/Tips/1116253/Desktop-Screen-Capture-on-Windows-via-Windows-Desk从https://code.msdn.microsoft.com/windowsdesktop/Desktop-Duplication-Sample-da4c696a这两个都是使用DXGI进行屏幕捕获的示例。我的机器上有NVIDIAGeForceGTX1060和Windows10Pro。它具有Intel™Cor

c++ - C++11 中的 3 默认成员弃用规则

根据下表,当用户提供复制赋值、复制构造函数和析构函数中的一个或多个时,C++11中不推荐自动生成默认复制构造函数和复制赋值的编译器(红色单元格表示弃用)。根据“3法则”,这是完全合理的。但是,该表显示在用户提供的复制构造函数/赋值的情况下,默认析构函数的生成并未被弃用。这个设计决定背后的基本原理是什么? 最佳答案 为什么要弃用它?一个对象完全有可能需要特殊的复制属性,但它的销毁完全由它的子对象析构函数决定。考虑一个简单的克隆指针:templateclasscloning_ptr{std::unique_ptrp;public:clo

c++ - 具有负值的 size_t 算术

我被要求复制一份std::string在作业中,我在执行substr时遇到问题功能。在老师给我们的一组测试中,有一个测试是length等于-1.矿山申报substr是:Cadenasubstr(size_tstart,size_tlength)const;我(认为)size_t会阻止传递负值。问题是在定义中我检查了size()(假设tam_与size()相同):if(tam_在我的系统中-1在unsigned是18446744073709551615,因此,例如假设开始是9和tam_是10.我希望:10这样抛出异常,但实际上我得到了10这是错误的,不会抛出异常。随着函数的继续,它分配了

c++ - 我可以将用 clang c++11 编译的对象与另一个用 c++17 编译的对象链接起来吗

我正在专门寻找thisquestion的clang答案.如果我用-std=c++11编译一个对象,用-std=c++17编译另一个对象,它们可以安全链接吗? 最佳答案 答案贴hereJonathanWakely的著作对于Clang也是正确的。简单的回答:如果您自己编译这两个对象,您选择的-std选项不会影响最终结果。大多数给定的C++ABI由标准库决定。其余的是各种运行时支持,例如异常、编译器内置(实际上可能分派(dispatch)到标准库)等等。libstdc++ABI兼容性是Clang的一个明确目标,所以你在这里没问题。如果您使

c++14 static constexpr auto 与 odr 用法

我有以下C++14代码:templatestructTest{staticconstexprautosomething{T::foo()};};这很好,只要T::foo()也是一个constexpr。现在我知道something是ODR使用的,所以我需要提供命名空间声明。我应该使用什么语法?templateconstexprautoTest::something;不起作用。谢谢! 最佳答案 通过using定义的类型名怎么样?templatestructTest{usingsomeType=decltype(T::foo());sta

c++ - 海湾合作委员会 : C++11 inline object initialization (using "this") does not work when there is a virtual inheritance in hierarchy

当在初始化中使用此指针并且在层次结构中存在虚拟继承时,C++11内联对象初始化不起作用(在GCC中)。这可能是GCC的错误吗(因为它在CLang中工作)?还是C++11标准本身的差距?示例(可以在here中尝试),当使用GCC编译以下代码时:FieldIndexm_inB{"inB",this};不会被执行。但它会在使用CLang编译时执行。变通方法:从FieldIndexContainer派生A作为虚拟#include#include#includeusingnamespacestd;classFieldIndexContainer{public:classFieldIndex{pu